package JUNHO.genericos;

import java.util.ArrayList;
import java.util.List;

public class GenericosCoringa28 
{
	
	public static void main(String[] args) {
		List<Animal> la = new ArrayList<Animal>();
		List<Cachorro> lc = new ArrayList<Cachorro>();
		List<LittleBeagle> ll = new ArrayList<LittleBeagle>();
		
		//teste List<?>
		fazAlgo(la);
		fazAlgo(ll);
		apavorarAaMente(la);
	}

	public static void fazAlgo(List<?> lista)
	{
		System.out.println(lista);
//		lista.add(new Cachorro()); //Comprovado! Nao deixa addicionar!!!
	}
	
	public static void fazMelhor(List<? extends Cachorro> l)
	{
		System.out.println(l);
//		l.add(new Cachorro()); //Comprovado!!! Tb n deixa add!!!!!!!!
	}
	
	public static void apavorarAaMente(List<? super Beagle> l)
	{
		System.out.println(l);
		l.add(new Beagle());
		l.add(new LittleBeagle());
	}

}

class Animal{}

class Cachorro extends Animal{}

class Beagle extends Cachorro{}

class LittleBeagle extends Beagle{}
